﻿
using System;
using System.Runtime.Serialization;
using V82;
using V82.Перечисления;//Ссылка;
namespace V82.Перечисления//Ссылка
{
	///<summary>
	///(Упр)
	///</summary>
	[DataContract]
	public enum ВариантыРаспределенияПоПериоду
	{
		[NonSerialized]
		ПустаяСсылка = - 1,
		[EnumMember(Value = "{\"Ссылка\":\"85eb5d62-9286-48a9-ab9a-be6ff96a3017\", \"Представление\":\"Равномерно\"}")]
		Равномерно = 0,
		[EnumMember(Value = "{\"Ссылка\":\"e8022f3e-32aa-4d2f-b844-3e809bdb72b6\", \"Представление\":\"ТочноКСроку\"}")]
		ТочноКСроку = 1,//Точно к сроку
		[EnumMember(Value = "{\"Ссылка\":\"6b116751-d043-4728-a034-982d4bc732b0\", \"Представление\":\"КакМожноБыстрее\"}")]
		КакМожноБыстрее = 2,//Как можно быстрее
	}
	public static partial class ВариантыРаспределенияПоПериоду_Значения//:ПеречислениеСсылка
	{
		public static readonly Guid Равномерно = new Guid("6fbe9aab-6af9-1730-48a9-928685eb5d62");
		public static readonly Guid ТочноКСроку = new Guid("803e44b8-db9b-b672-4d2f-32aae8022f3e");//Точно к сроку
		public static readonly Guid КакМожноБыстрее = new Guid("2d9834a0-c74b-b032-4728-d0436b116751");//Как можно быстрее
		public static ВариантыРаспределенияПоПериоду Получить(this ВариантыРаспределенияПоПериоду Значение, byte[] Ссылка)
		{
			return Получить(Значение, new Guid(Ссылка));
		}
		public static ВариантыРаспределенияПоПериоду Получить(this ВариантыРаспределенияПоПериоду Значение, Guid Ссылка)
		{
			if(Ссылка == Равномерно)
			{
				return ВариантыРаспределенияПоПериоду.Равномерно;
			}
			else if(Ссылка == ТочноКСроку)
			{
				return ВариантыРаспределенияПоПериоду.ТочноКСроку;
			}
			else if(Ссылка == КакМожноБыстрее)
			{
				return ВариантыРаспределенияПоПериоду.КакМожноБыстрее;
			}
			return ВариантыРаспределенияПоПериоду.ПустаяСсылка;
		}
		public static byte[] Ключ(this ВариантыРаспределенияПоПериоду Значение)
		{
			return Ссылка(Значение).ToByteArray();
		}
		public static Guid Ссылка(this ВариантыРаспределенияПоПериоду Значение)
		{
			switch (Значение)
			{
				case ВариантыРаспределенияПоПериоду.Равномерно: return Равномерно;
				case ВариантыРаспределенияПоПериоду.ТочноКСроку: return ТочноКСроку;
				case ВариантыРаспределенияПоПериоду.КакМожноБыстрее: return КакМожноБыстрее;
			}
			return Guid.Empty;
		}
	}
}